﻿<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
    <META NAME="save" CONTENT="history" />
    <title>Usando vários conjuntos de resultados</title>
    
    <link rel="stylesheet" type="text/css" href="../local/Classic.css">
      
    </link>
    
    <script src="../local/script.js">
      
    </script><script src="../local/script_main.js">&amp;nbsp;</script>
  </head>
  <body>
    <!--Topic built:04/01/2010 05:03:30-->

    
    
    
    
    
    
    
    
    
    <div id="header">
      <table width="100%" id="topTable"><tr>
          <td align="left">
            <span id="headerBold">Usando vários conjuntos de resultados</span>
          </td>
          <td align="right">
            
          </td>
        </tr></table>
      
      
      
    </div>
    <div id="mainSection">
      
        
        
    <font color="DarkGray">
      
    </font>
    <p />
    
    <p />
  
        <div id="introductionSection" class="section">
    <p>Ao trabalhar com SQL embutido ou procedimentos armazenados do SQL Server que retornam mais de um conjunto de resultados, o Microsoft SQL Server JDBC Driver fornece o método <a href="929a14e2-8e98-4c32-89aa-86733c717ec1.htm">getResultSet</a> na classe <a href="ec24963c-8b51-4838-91e9-1fbfa2347451.htm">SQLServerStatement</a> para recuperar cada conjunto de dados retornados. Além disso, ao executar uma instrução que retorna mais de um conjunto de resultados, você pode usar o método <a href="e1367f39-23d7-4e26-b160-6d988d7e6988.htm">execute</a> da classe <b>SQLServerStatement</b>, porque retornará um valor <b>boolean</b> que indica se o valor retornado é um conjunto de resultados ou uma contagem de atualização. </p>
    <p>Se o método <b>execute</b> retornar <b>true</b>, isso significa que a instrução que foi executada retornou um ou mais conjuntos de resultados. Você pode acessar o primeiro conjunto de resultados chamando o método <b>getResultSet</b>. Para determinar se mais conjuntos de resultados estão disponíveis, você pode chamar o método <a href="6b18510a-4d6d-4eeb-a9d0-32e920eb0048.htm">getMoreResults</a> que retornará um valor <b>boolean</b> de <b>true</b> se mais conjuntos de resultados estiverem disponíveis. Se mais conjuntos de resultados estiverem disponíveis, você pode chamar o método <b>getResultSet</b> novamente para acessá-los, continuando o processo até que todos os conjuntos de resultados tenham sido processados. Se o método <b>getMoreResults</b> retornar <b>false</b>, não haverá nenhum mais conjuntos de resultados para processar.</p>
    <p>Se o método <b>execute</b> retornar <b>false</b>, a instrução que foi executada retornou um valor de contagem de atualização que você pode recuperar chamando o método <a href="e9570228-4500-44b6-b2f1-84ac050b5112.htm">getUpdateCount</a>.</p>
    <div style="margin: .5em 1.5em .5em 1.5em"><b>Observação: </b>
      Para obter mais informações sobre contagens de atualização, consulte <a href="64cf4877-5995-4bfc-8865-b7618a5c8d01.htm">Usando um procedimento armazenado com uma contagem de atualização</a>.<p />
    </div>
    <p>No exemplo a seguir, uma conexão aberta com o banco de dados de exemplo AdventureWorks do SQL Server 2005 é passada para a função, e uma instrução SQL é construída para, quando for executada, retornar dois conjuntos de resultados:</p>
    <div class="sampleCode"><span codeLanguage="other"><pre>public static void executeStatement(Connection con) {
   try {
      String SQL = "SELECT TOP 10 * FROM Person.Contact; " +
                   "SELECT TOP 20 * FROM Person.Contact";
      Statement stmt = con.createStatement();
      boolean results = stmt.execute(SQL);
      int rsCount = 0;

      //Loop through the available result sets.
     do {
        if(results) {
           ResultSet rs = stmt.getResultSet();
           rsCount++;

           //Show data from the result set.
           System.out.println("RESULT SET #" + rsCount);
           while (rs.next()) {
              System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
           }
           rs.close();
        }
        System.out.println();
        results = stmt.getMoreResults();
        } while(results);
      stmt.close();
      }
   catch (Exception e) {
      e.printStackTrace();
   }
}
</pre></span></div>
    <p>Neste caso, o número de conjuntos de resultados retornado é conhecido para ser dois. Porém, o código é escrito de forma que, se um número desconhecido de conjuntos de resultados fosse retornado, como ao chamar um procedimento armazenado, todos eles seriam processados. Para ver um exemplo de chamada de procedimento armazenado que retorna vários conjuntos de resultados junto com valores de atualização, consulte <a href="6b807a45-a8b5-4b1c-8b7b-d8175c710ce0.htm">Tratando instruções complexas</a>.</p>
    <div style="margin: .5em 1.5em .5em 1.5em"><b>Observação: </b>
      Quando você fizer a chamada para o método <b>getMoreResults</b> da classe <b>SQLServerStatement</b> classe, o conjunto de resultados previamente retornado será fechado implicitamente.<p />
    </div>
  </div><span id="seeAlsoSpan"><h1 class="heading">Consulte também</h1></span><div id="seeAlsoSection" class="section" name="collapseableSection"><a href="7f8f3e8f-841e-4449-9154-b5366870121f.htm">Usando instruções com o JDBC Driver</a><br /><br /></div><!--[if gte IE 5]>
			<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
		<![endif]-->
      <div id="footer" class="section">
        
		<hr />
		
		<span id="fb" class="feedbackcss">
			
			
		</span>
		
		<a href="9bad553b-9e70-4696-8499-2e35f772a1e0.htm">
			
			© 2010 Microsoft Corporation. Todos os direitos reservados.
		</a>
 	
	
      </div>
    </div>
  </body>
</html>